package com.cjh.mybatis08.reflection.invoker;

import java.lang.reflect.Method;

/**
 * @Descripton 方法调用者
 * @Author cjh
 * @Date 2023/6/2 13:49
 */
public class MethodInvoker implements Invoker {
    /**
     * 如果只有一个参数 返回参数类型 否则返回 return的类型
     *
     */
    private Class<?> type;
    private Method method;


    public MethodInvoker(Method method) {
        this.method = method;
//        如果只有一个参数 返回参数类型 否则返回return类型
        if (method.getParameterTypes().length == 1){
            type = method.getParameterTypes()[0];
        }else {
            type = method.getReturnType();
        }

    }

    @Override
    public Object invoke(Object target, Object[] args) throws Exception {
        return method.invoke(target, args);
    }

    @Override
    public Class<?> getType() {
        return type;
    }
}
